import os
from config import Config
from werkzeug.utils import secure_filename


class FileUtils:
    # 获取文件路径
    def get_file_path(filename):
        """
        获取文件路径

        参数:
        filename (str): 文件名

        返回:
        str: 文件路径
        """
        return os.path.join(Config.UPLOAD_FOLDER, filename)



    # 创建上传目录
    def init_upload_directory():
        """
        确保上传目录已经存在，如果不存在则创建。

        返回:
        None
        """
        
        FileUtils.ensure_upload_directory(Config.UPLOAD_FOLDER)

    # 创建上传目录
    def ensure_upload_directory(directory):
        """
        确保上传目录已经存在，如果不存在则创建。

        参数:
        directory (str): 上传目录的路径

        返回:
        None
        """
        if not os.path.exists(directory):
            os.makedirs(directory)

    # 检查文件名是否包含扩展名，并且扩展名是否在允许的扩展名列表中。
    def allowed_file(filename,allowed_extensions):
        """
        检查文件名是否包含扩展名，并且扩展名是否在允许的扩展名列表中。

        参数:
        filename (str): 文件名
        allowed_extensions (list): 允许的扩展名列表"

        返回:
        bool: 如果文件名包含扩展名且扩展名在允许的扩展名列表中，则返回True，否则返回False
        """
        return '.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_extensions
        # _, file_extension = os.path.splitext(secure_filename(filename))
        # file_extension = file_extension.lower()
        # return file_extension in allowed_extensions
    # 获取文件的文件类型
    def get_file_type(file_path):
        """
        获取文件的文件类型
        参数:
        file_path (str): 文件路径
        返回:
        str: 文件的类型
        """
        return os.path.splitext(file_path)[1]
    # 获取文件的大小
    def get_file_size(file_path):
        """
        获取文件的大小

        参数:
        file_path (str): 文件路径

        返回:
        int: 文件的大小，以字节为单位
        """
        return os.path.getsize(file_path)
